package simco.framework.gui.graph.supp;

import simco.framework.gui.graph.ConnectingLine;
import simco.framework.gui.graph.iface.Connectable;

/**
 * Tato trida reprezentuje konec vazby (mezi grafickymi objekty).
 * Kazdy konec vazby ma svou pozici v prostoru (v zavislosti na tom
 * k jakemu objektu je tento konec vazby prirazen).
 *  
 * @author Matej Prokop, mythge@students.zcu.cz
 */
public class LineEdge
{
	/**
	 * Souradnice x pozice v prostoru 
	 */
    private int x = 0;
    
    /**
	 * Souradnice y pozice v prostoru 
	 */
    private int y = 0;

    /**
	 * Druhy konec vazby, ktery je napojen na tento
	 * konec prostrednictvim vazby. Pozn: kazda 
	 * vazba ma prave dva konce. 
	 */
    private LineEdge oppositeEdge;

    /**
     * Reference na objekt, k nemuz je pripojen tento 
     * konec vazby 
     */
    private Connectable edgeOwner;

    /**
     * Odkaz na graficky objekt predstavujici vazbu 
     */
    private ConnectingLine line;

    /**
     * Vytvori novy konec vazby, pro vazbu prijatou
     * jako parametr
     * 
     * @param line vazva mezi objekty
     */
    public LineEdge(ConnectingLine line)
    {
    	this.line = line;
    }
    
    /**
     * Vraci druhy (protilehly) konec vazby
     * @return druhy konec vazby
     */
    public LineEdge getOppositeEdge() 
    {
        return oppositeEdge;
    }

    /**
     * Nastavuje druhy (protilehly) konec vazby
     * @param oppositeEdge druhy (protilehly) konec vazby
     */
    public void setOppositeEdge(LineEdge oppositeEdge) 
    {
        this.oppositeEdge = oppositeEdge;
    }

    /**
     * Vraci x-ovou souradnici aktualni pozice objektu v prostoru
     * @return x-ovou souranici v prostoru
     */
    public int getX() 
    {
        return x;
    }

    /**
     * Nastavuje x-ovou souradnici aktualni pozice objektu v prostoru
     * @param x x-ovou souradnice aktualni pozice objektu v prostoru
     */
    public void setX(int x) 
    {
        this.x = x;
    }

    /**
     * Vraci y-ovou souradnici aktualni pozice objektu v prostoru
     * @return y-ovou souranici v prostoru
     */
    public int getY() 
    {
        return y;
    }

    /**
     * Nastavuje y-ovou souradnici aktualni pozice objektu v prostoru
     * @param y y-ovou souradnice aktualni pozice objektu v prostoru
     */
    public void setY(int y) 
    {
        this.y = y;
    }

    /**
     * Vraci objekt, k nemuz je pripojen tento konec vazby.
     * @return objekt, k nemuz je pripojen tento konec vazby.
     */
    public Connectable getEdgeOwner() 
    {
        return edgeOwner;
    }

    /**
     * Nastavuje objekt, k nemuz je pripojen tento konec vazby.
     * @param edgeOwner objekt, k nemuz bude pripojen tento konec vazby.
     */
    public void setEdgeOwner(Connectable edgeOwner) 
    {
        this.edgeOwner = edgeOwner;
    }

	/**
	 * Vraci referenci na vazbu pripnout k tomuto konci
	 * 
	 * @return vazbu pripnout k tomuto konci
	 */
    public ConnectingLine getLine() 
	{
		return line;
	}
	  
}
